
package com.swak.frame.filter.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.swak.frame.ratelimit.annotation.RateLimit;

/**
 * @author colley.ma
 * @date 2021年4月7日 下午4:03:48
 */
@Documented
@Target({java.lang.annotation.ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface SwakMethod {

    public abstract String desc();

    public abstract String value() default "";

    /**
     * 扩展能力支持 {@link com.swak.frame.extension.annotation.Extension}
     * 
     * @return
     */
    public abstract String bizId() default "";

    /**
     * 是否开启登录校验 {@link com.swak.frame.dto.base.SysRestCode#USER_NO_LOGIN}
     * 
     * @return
     */
    public abstract boolean requiredLogin() default false;

    /**
     * 开启限流,默认未开启
     * {@link com.swak.frame.ratelimit.annotation.RateLimit}
     * 
     * @return
     */
    public abstract RateLimit[] rateLimit() default {};

    /**
     * 开启ump监控
     * 
     * @return
     */
    public abstract boolean requiredUmp() default true;
}
